package com.xjh.basestudy.designmode.behaviorMode.behaviorMode2_Iterator.p2_origin;

/**
 * @author XuJianHua
 * @date 2022-09-29 16:57:50
 * @description 行车记录仪类
 * * 假设行车记录仪的存储空间只够存储10条视频，我们首先在第4行定义了一个原始的字符串数组records，用来模拟视频记录，
 * * 并在第3行用一个索引index来标记当前记录所在位置。当用户调用第6行的append()方法插入视频之前，
 * * 我们得先看空间有没有满，如果满了就把索引调整到起始位置再记录视频，也就是覆盖索引第一个位置的视频，否则将索引加1覆盖下一条视频。
 * * 视频循环覆盖逻辑已经完成了，为了给用户显示，我们提供了两个显示方法：一个是第15行的display()方法，
 * * 可以按默认数组顺序显示；另一个是第21行的displayByOrder()方法，
 */
public class DrivingRecorder {

    private int index = -1;// 当前记录位置
    private String[] records = new String[10];// 假设只能记录10条视频

    public void append(String record) {
        if (index == 9) {// 索引重置，从头覆盖
            index = 0;
        } else {//正常覆盖下一条
            index++;
        }
        records[index] = record;
    }

    public void display() {// 循环数组并显示所有10条记录
        for (int i = 0; i < 10; i++) {
            System.out.println(i + ": " + records[i]);
        }
    }

    public void displayByOrder() {//按顺序从新到旧显示10条记录
        for (int i = index, loopCount = 0; loopCount < 10; i = i == 0 ? i = 9 : i - 1, loopCount++) {
            System.out.println(records[i]);
        }
    }

}
